#include <vector>

#define EQ_ORDERS 3
#define EQ_COUNT 10

class EQFilter
{
public:
	EQFilter();
	~EQFilter();
	void EQInit();
	void setEQArgs(double *center_freq, double *gain, double *Q, double sampling_rate /*= 48000*/);
	void setEQArgs(unsigned int count, double center_freq, double gain, double Q, double sampling_rate = 48000);
	std::vector<float> run(std::vector<float> &x);
private:
	double m_a[EQ_COUNT][EQ_ORDERS];
	double m_b[EQ_COUNT][EQ_ORDERS];
	double m_CenterFreq[EQ_COUNT];
	double m_Gain[EQ_COUNT];
	double m_Q[EQ_COUNT];
	bool m_isValid;
	float m_x[EQ_COUNT][EQ_ORDERS - 1];
	float m_y[EQ_COUNT][EQ_ORDERS - 1];

};
